package
{
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.utils.Timer;
	
	import org.osmf.events.TimeEvent;

	public class Test2 extends Sprite
	{
		// 显示时间的文本域
		private var box:TextField = new TextField();
		// 倒计时标题文本域
		private var title:TextField = new TextField();
		// 文本格式化对象
		private var textF:TextFormat = new TextFormat();
		// 时间差，字符串
		private var timeDiff:String;
		// 开始时间，时间类型
		private var beginTime:Date;
		// 结束时间，时间类型 2012年12月22日0时，月份是从0开始的，与其它编程语言一样
		private var endTime:Date = new Date(2012, 11, 22, 00);
		
		public function Test2()
		{
			// 这部分代码是对文本样式做一些处理，可以尝试修改
			textF.font = "微软雅黑";
			textF.size = 26;
			textF.color = 0xFFFFFF;
			box.x = 88;
			box.y = 400;
			box.defaultTextFormat = textF;
			box.autoSize = TextFieldAutoSize.LEFT;
			// 获取时间差并添加到显示时间的文本域
			//timerHandler();
			// 将文本域添加到舞台
			addChild(box);
			// Timer对象，设置1000毫秒（1秒）运行一次
			var timer:Timer = new Timer(1000);
			// 事件侦听 timerHandler 函数
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			// 开始执行，timerHandler函数将1秒运行一次
			timer.start();
		}
		
		private function timerHandler(event:TimerEvent):void
		{
			// 获取当前时间
			beginTime = new Date();
			// 获取当前时间到结束时间的时间差
			timeDiff = getTimeDiff();
			// 添加到显示时间的文本域
			box.text = timeDiff;
		}
		
		/**
		 * 获取时间差
		 *
		 */
		private function getTimeDiff():String
		{
			// 时间差 = 结束时间 - 开始时间除以1000，最后四舍五入取整。getTime()获取的时间精确到了毫秒，所以要除以1000
			var diff:Number = Math.round((endTime.getTime()-beginTime.getTime())/1000);
			// 时间差大于0
			if (diff >= 0)
			{
				// 获取天数
				var d:uint = Math.floor(diff/60/60/24);
				// 取余，余下的数值就是时、分、秒
				diff %= 60*60*24;
				// 获取小时数
				var h:uint = Math.floor(diff/60/60);
				// 取余，余下的数值就是分、秒
				diff %= 60*60;
				// 获取分钟数
				var m:uint = Math.floor(diff/60);
				// 取余，余下的数值就是秒
				var s:uint = diff % 60;
			}
			// 返回值，拼接为字符串
			return d + " 天 " + fixZero(h) + " 小时 " + fixZero(m) + " 分 " + fixZero(s) + " 秒";
		}
		
		/**
		 * 时间补零
		 *
		 */
		private function fixZero(num:uint):String
		{
			// 数值小于10的前面加0。
			// 转换为字符串
			return (num < 10) ? '0' + String(num) : String(num);
		}
	}
}